Skip to content
This repository was archived by the owner on Aug 8, 2025. It is now read-only.

Conversation

@renovate
Copy link
Contributor

@renovate renovate bot commented Nov 1, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
@babel/core (source) 7.25.2 -> 7.26.0 age adoption passing confidence
@hookform/resolvers (source) 3.9.0 -> 3.9.1 age adoption passing confidence
@mantine/core (source) 7.13.1 -> 7.14.1 age adoption passing confidence
@mantine/hooks (source) 7.13.1 -> 7.14.1 age adoption passing confidence
@mantine/notifications (source) 7.13.1 -> 7.14.1 age adoption passing confidence
@reduxjs/toolkit (source) 2.2.7 -> 2.3.0 age adoption passing confidence
@tanstack/react-query (source) 5.56.2 -> 5.60.5 age adoption passing confidence
@tanstack/react-query-devtools (source) 5.58.0 -> 5.60.5 age adoption passing confidence
@types/node (source) 22.7.4 -> 22.9.0 age adoption passing confidence
@types/react (source) 18.3.10 -> 18.3.12 age adoption passing confidence
@types/react-dom (source) 18.3.0 -> 18.3.1 age adoption passing confidence
@typescript-eslint/eslint-plugin (source) 8.8.0 -> 8.14.0 age adoption passing confidence
@typescript-eslint/parser (source) 8.8.0 -> 8.14.0 age adoption passing confidence
eslint-config-next (source) 14.2.13 -> 15.0.3 age adoption passing confidence
eslint-plugin-import 2.30.0 -> 2.31.0 age adoption passing confidence
eslint-plugin-jsx-a11y 6.10.0 -> 6.10.2 age adoption passing confidence
eslint-plugin-react 7.37.0 -> 7.37.2 age adoption passing confidence
eslint-plugin-react-hooks (source) 4.6.2 -> 5.0.0 age adoption passing confidence
next (source) 14.2.13 -> 15.0.3 age adoption passing confidence
next-auth (source) 4.24.8 -> 4.24.10 age adoption passing confidence
postcss (source) 8.4.47 -> 8.4.49 age adoption passing confidence
react-hook-form (source) 7.53.0 -> 7.53.2 age adoption passing confidence
tailwind-merge 2.5.2 -> 2.5.4 age adoption passing confidence
tailwindcss (source) 3.4.13 -> 3.4.15 age adoption passing confidence
type-fest 4.26.1 -> 4.27.0 age adoption passing confidence
typescript (source) 5.6.2 -> 5.6.3 age adoption passing confidence

Release Notes

babel/babel (@​babel/core)

v7.26.0

Compare Source

v7.25.9

Compare Source

🐛 Bug Fix
🏠 Internal
🏃‍♀️ Performance

v7.25.8

Compare Source

🐛 Bug Fix
🏠 Internal
  • babel-parser, babel-plugin-proposal-async-do-expressions, babel-plugin-proposal-destructuring-private, babel-plugin-proposal-do-expressions, babel-plugin-proposal-explicit-resource-management, babel-plugin-proposal-export-default-from, babel-plugin-proposal-function-bind, babel-plugin-proposal-function-sent, babel-plugin-proposal-import-defer, babel-plugin-proposal-partial-application, babel-plugin-proposal-throw-expressions, babel-plugin-transform-async-generator-functions, babel-plugin-transform-class-static-block, babel-plugin-transform-dynamic-import, babel-plugin-transform-export-namespace-from, babel-plugin-transform-json-strings, babel-plugin-transform-logical-assignment-operators, babel-plugin-transform-nullish-coalescing-operator, babel-plugin-transform-numeric-separator, babel-plugin-transform-object-rest-spread, babel-plugin-transform-optional-catch-binding, babel-plugin-transform-optional-chaining, babel-plugin-transform-private-property-in-object, babel-preset-env

v7.25.7

Compare Source

🐛 Bug Fix
💅 Polish
🏠 Internal
  • babel-core
  • babel-helper-compilation-targets, babel-helper-plugin-utils, babel-preset-env
  • babel-plugin-proposal-destructuring-private, babel-plugin-syntax-decimal, babel-plugin-syntax-import-reflection, babel-standalone
  • babel-generator
🏃‍♀️ Performance
react-hook-form/resolvers (@​hookform/resolvers)

v3.9.1

Compare Source

mantinedev/mantine (@​mantine/core)

v7.14.1

Compare Source

What's Changed
  • [@mantine/hooks] use-hotkeys: Fix + sign not being supported (syntax: shift+[plus]) (#​7123)
  • [@mantine/core] Popover: Fix styles prop being handled incorrectly (#​7120)
  • [@mantine/charts] Fix valueFormatter not working in point labels of LineChant, AreaChart and CompositeChart components (#​6989)
  • [@mantine/core] Popover: Fix onOpen and onClose callbacks being called on each render (#​7022, #​7111, #​7115)
  • [@mantine/core] Menu: Fix Blocked aria-hidden warning when an interactive element is clicked outside of the Menu.Dropdown when the Menu is opened (#​7035)
  • [@mantine/core] Fix top style prop not being conveted to rem (#​7112)
  • [@mantine/dates] DateInput: Fix defaultDate prop not working when the value is set to null (#​4426)
  • [@mantine/core] NumberInput: Remove increment/decrement control if value cannot be safely incremented (is larger than Number.MAX_SAFE_INTEGER) (#​7033)
  • [@mantine/core] NumberInput: Fix value being reverted to start value if intial component value is a string
  • [@mantine/notifications] Fix NotificationData type being too broad (#​7097)
  • [@mantine/core] RingProgress: Add transitionDuration prop support (#​7103)
  • [@mantine/core] TagsInput: Fix incorrect tag remove logic with duplicated tags (#​7105)
  • [@mantine/core] Combobox: Fix incorrect aria-controls attribute being set on the target element when the dropdown is closed (#​7114)
New Contributors

Full Changelog: mantinedev/mantine@7.14.0...7.14.1

v7.14.0: 💋

Compare Source

View changelog with demos on mantine.dev website

AngleSlider component

New AngleSlider component:

import { AngleSlider, Group } from '@​mantine/core';

function Demo() {
  return (
    <Group p="lg" gap={50}>
      <AngleSlider
        aria-label="Angle slider"
        formatLabel={(value) => `${value}°`}
        size={100}
        restrictToMarks
        marks={[
          { value: 0 },
          { value: 45 },
          { value: 90 },
          { value: 135 },
          { value: 180 },
          { value: 225 },
          { value: 270 },
          { value: 315 },
        ]}
      />

      <AngleSlider
        aria-label="Angle slider"
        formatLabel={(value) => `${value}°`}
        size={100}
        marks={[
          { value: 0, label: '0°' },
          { value: 45, label: '45°' },
          { value: 90, label: '90°' },
          { value: 135, label: '135°' },
          { value: 180, label: '180°' },
          { value: 225, label: '225°' },
          { value: 270, label: '270°' },
          { value: 315, label: '315°' },
        ]}
      />
    </Group>
  );
}
RadialBarChart component

New RadialBarChart component:

import { RadialBarChart } from '@&#8203;mantine/charts';

const data = [
  { name: '18-24', value: 31.47, color: 'blue.7' },
  { name: '25-29', value: 26.69, color: 'orange.6' },
  { name: '30-34', value: 15.69, color: 'yellow.7' },
  { name: '35-39', value: 8.22, color: 'cyan.6' },
  { name: '40-49', value: 8.63, color: 'green' },
  { name: '50+', value: 2.63, color: 'pink' },
  { name: 'unknown', value: 6.67, color: 'gray' },
];

function Demo() {
  return <RadialBarChart data={data} dataKey="value" h={280} withLabels />;
}
FunnelChart component

New FunnelChart component:

import { FunnelChart } from '@&#8203;mantine/charts';

const data = [
  { name: 'USA', value: 400, color: 'indigo.6' },
  { name: 'India', value: 300, color: 'yellow.6' },
  { name: 'Japan', value: 100, color: 'teal.6' },
  { name: 'Other', value: 200, color: 'gray.6' },
];

function Demo() {
  return <FunnelChart data={data} />;
}
Modal.Stack and Drawer.Stack components

New Modal.Stack and Drawer.Stack components simplify usage of multiple modals/drawers at the same time.

Use Modal.Stack component to render multiple modals at the same time.
Modal.Stack keeps track of opened modals, manages z-index values, focus trapping
and closeOnEscape behavior. Modal.Stack is designed to be used with useModalsStack hook.

Differences from using multiple Modal components:

  • Modal.Stack manages z-index values – modals that are opened later will always have higher z-index value disregarding their order in the DOM
  • Modal.Stack disables focus trap and Escape key handling for all modals except the one that is currently opened
  • Modals that are not currently opened are present in the DOM but are hidden with opacity: 0 and pointer-events: none
  • Only one overlay is rendered at a time
import { Button, Group, Modal, useModalsStack } from '@&#8203;mantine/core';

function Demo() {
  const stack = useModalsStack(['delete-page', 'confirm-action', 'really-confirm-action']);

  return (
    <>
      <Modal.Stack>
        <Modal {...stack.register('delete-page')} title="Delete this page?">
          Are you sure you want to delete this page? This action cannot be undone.
          <Group mt="lg" justify="flex-end">
            <Button onClick={stack.closeAll} variant="default">
              Cancel
            </Button>
            <Button onClick={() => stack.open('confirm-action')} color="red">
              Delete
            </Button>
          </Group>
        </Modal>

        <Modal {...stack.register('confirm-action')} title="Confirm action">
          Are you sure you want to perform this action? This action cannot be undone. If you are
          sure, press confirm button below.
          <Group mt="lg" justify="flex-end">
            <Button onClick={stack.closeAll} variant="default">
              Cancel
            </Button>
            <Button onClick={() => stack.open('really-confirm-action')} color="red">
              Confirm
            </Button>
          </Group>
        </Modal>

        <Modal {...stack.register('really-confirm-action')} title="Really confirm action">
          Jokes aside. You have confirmed this action. This is your last chance to cancel it. After
          you press confirm button below, action will be performed and cannot be undone. For real
          this time. Are you sure you want to proceed?
          <Group mt="lg" justify="flex-end">
            <Button onClick={stack.closeAll} variant="default">
              Cancel
            </Button>
            <Button onClick={stack.closeAll} color="red">
              Confirm
            </Button>
          </Group>
        </Modal>
      </Modal.Stack>

      <Button onClick={() => stack.open('delete-page')}>Open modal</Button>
    </>
  );
}
useModalsStack/useDrawersStack hooks

useModalsStack hook provides an easy way to control multiple modals at the same time.
It accepts an array of unique modals ids and returns an object with the following properties:

interface ModalStackReturnType<T extends string> {
  // Current opened state of each modal
  state: Record<T, boolean>;

  // Opens modal with the given id
  open: (id: T) => void;

  // Closes modal with the given id
  close: (id: T) => void;

  // Toggles modal with the given id
  toggle: (id: T) => void;

  // Closes all modals within the stack
  closeAll: () => void;

  // Returns props for modal with the given id
  register: (id: T) => {
    opened: boolean;
    onClose: () => void;
    stackId: T;
  };
}

Example of using useModalsStack with Modal component:

import { Modal, useModalsStack } from '@&#8203;mantine/core';

function Demo() {
  const stack = useModalsStack(['first', 'second']);

  return (
    <>
      <Modal {...stack.register('first')}>First</Modal>
      <Modal {...stack.register('second')}>Second</Modal>
      <Button onClick={() => stack.open('first')}>Open first</Button>
    </>
  );
}
Restrict Slider selection to marks

Slider component now supports restrictToMarks prop that restricts slider value to marks only.
Note that in this case step prop is ignored:

import { Slider } from '@&#8203;mantine/core';

function Demo() {
  return (
    <Slider
      restrictToMarks
      defaultValue={25}
      marks={Array.from({ length: 5 }).map((_, index) => ({ value: index * 25 }))}
    />
  );
}
BarChart SVG pattern fill

BarChart now can be used with SVG pattern fill:

import { BarChart } from '@&#8203;mantine/charts';
import { data } from './data';

function Demo() {
  return (
    <BarChart
      h={300}
      data={mixedStackData}
      dataKey="month"
      series={[
        { name: 'Smartphones', color: 'url(#crosshatch)', stackId: 'a' },
        { name: 'Laptops', color: 'blue.6', stackId: 'b' },
        { name: 'Tablets', color: 'url(#diagonalStripes)', stackId: 'b' },
      ]}
    >
      <defs>
        <pattern
          id="diagonalStripes"
          patternUnits="userSpaceOnUse"
          width={6}
          height={8}
          patternTransform="rotate(45)"
        >
          <rect
            width="2"
            height="8"
            transform="translate(0,0)"
            fill="color-mix(in lch, var(--mantine-color-teal-6) 70%, rgba(0,0,0,0))"
          />
        </pattern>

        <pattern id="crosshatch" patternUnits="userSpaceOnUse" width={8} height={8}>
          <path
            d="M 0 0 L 8 0 L 8 8 L 0 8 Z"
            fill="none"
            stroke="color-mix(in lch, var(--mantine-color-indigo-6) 70%, rgba(0,0,0,0))"
            strokeWidth="1"
          />
          <path
            d="M 0 0 L 8 8"
            stroke="color-mix(in lch, var(--mantine-color-indigo-6) 70%, rgba(0,0,0,0))"
            strokeWidth="1"
          />
          <path
            d="M 8 0 L 0 8"
            stroke="color-mix(in lch, var(--mantine-color-indigo-6) 70%, rgba(0,0,0,0))"
            strokeWidth="1"
          />
        </pattern>
      </defs>
    </BarChart>
  );
}
Help center updates
Other changes
  • useTree hook now accepts onNodeExpand and onNodeCollapse callbacks
  • useTree hook now returns additional checkAllNodes, uncheckAllNodes and setCheckedState handlers
  • Tree component now includes getTreeExpandedState to generate expanded state based on the tree data
  • use-form now supports form.replaceListItem handler to replace list item at given index

v7.13.5

Compare Source

What's Changed

  • [@mantine/core] Update peer dependencies range for react to allow react and react-dom 19 as dependcy
  • [@mantine/core] Fix error in Next.js with React 19 related to ref prop usage in Tooltip, Popover and Combobox components (#​7028)
  • [@mantine/core] FileButton: Fix resetRef throwing error if the component is contidionally rendered (#​7025)
  • [@mantine/core] Button: Fix incorrect focus styles of Button.Group (#​6992)
  • [@mantine/charts] CompositeCharts: Fix missing key prop error (#​7020)
  • [@mantine/core] NumberInput: Fix min/max value being bypassed if 0 has been entered as the first digit (#​7021)
  • [@mantine/form] Add useCallback wrapper to form.resetDirty (#​7029)
  • [@mantine/core] Combobox: Fix incorrect logic of selected options when the dropdown is closed without selecting value (#​7039)
  • [@mantine/charts] BarChart: Add barLabelColor prop support
  • [@mantine/charts] BarChart: Fix bar label being positioned incorrectly with horizontal orientation (#​7042)
  • [@mantine/charts] RadarChart: Fix incorrect series prop type (#​7046)
  • [@mantine/form] Add additional type exports from the package (#​7062)
  • [@mantine/core] Tabs: Fix tabIndex not being overridden by Tabs.Tab props (#​7081)
  • [@mantine/dates] DatePickerInput: Fix nextLabel and previousLabel props not being handled correctly (#​7082)
  • [@mantine/charts] Update recharts dependency to the latest version to improve Next.js 15 and React 19 support

New Contributors

Full Changelog: mantinedev/mantine@7.13.4...7.13.5

v7.13.4

Compare Source

Next.js 15 support

The documentation and templates have been updated to support Next.js 15 release, for more information visit – https://mantine.dev/guides/next/

Other changes
  • [@mantine/dates] DatePickerInput: Fix dropdown staying opened after the disabled prop has been set (#​7017)
  • [@mantine/core] NumberInput: Fix incorrect ref node type
  • [@mantine/core] Popover: Fix onClose event firing incorrectly

Full Changelog: mantinedev/mantine@7.13.3...7.13.4

v7.13.3

Compare Source

What's Changed
  • [@mantine/core] Fix cqw, cqh, cqi, cqb, cqmax and cqmin size units not being handled correctly in style props
  • [@mantine/dates] DateTimePicker: Remove defaultValue and value props from timeInputProps types to avoid confusion (#​6959)
  • [@mantine/dropzone] Set data-disabled attribute on the root element if disabled prop is set (#​6946)
  • [@mantine/core] Modal: Fix default Modal.Root transition being different from Modal component (#​6967)
  • [@mantine/core] ColorInput: Fix popoverProps={{ opned: true }} not working (#​6968)
  • [@mantine/charts] Fix valueFormatter prop not working correctly with orientation="vertical" in BarChart, AreaChart and LineChart components (#​6979)
  • [@mantine/core] Popover: Fix onOpen not being called with controlled opened state (#​6981)
  • [@mantine/core] NumberInput: Fix incorrect min prop handling for large numbers (#​6985)
  • [@mantine/dropzone] Add HEIF image mime type (#​6977)
  • [@mantine/core] PasswordInput: Fix cursor shifting when the visibility button is clicked on touch devices (#​6971)
New Contributors

Full Changelog: mantinedev/mantine@7.13.2...7.13.3

v7.13.2

Compare Source

What's Changed
  • [@mantine/dates] DateInput: Fix onClick handler passed to getDayProps not being called
  • [@mantine/core] Badge: Fix incorrect cursor styles
  • [@mantine/core] FileInput: Add resetRef prop support
  • [@mantine/core] Popover: Fix onClose function being called twice with controlled state
  • [@mantine/spotlight] Fix selected index not being reset when the spotlight is closed (#​6842)
  • [@mantine/core] Popover: Improve performance of scrolling when large number of closed Popovers are rendered on the same page (#​6771)
  • [@mantine/core] Pagination: Fix getItemProps not being able to override control children prop (#​6789)
  • [@mantine/core] ScrollArea: Fix onBottomReached not being called if the viewport has decimal px height value (#​6792)
  • [@mantine/hooks] use-in-viewport: Fix hook not reacting to node changes (#​6926)
  • [@mantine/core] NumberInput: Fix incorrect handling of decimal numbers with more than 15 decimal places (#​6823)
  • [@mantine/core] Slider: Fix marks not being aligned correctly (#​6909)
  • [@mantine/hooks] use-fullscreen: Fix target node changes being ignored (#​6923)
  • [@mantine/core] Badge: Fix incorrect sections alignment for variant="dot"
  • [@mantine/core] TagsInput: Fix incorrect logic of removing duplicate tags (#​6922)
  • [@mantine/core] AppShell: Fix error when Suspense is rendered inside AppShell (#​6927)
  • [@mantine/core] Menu: Fix onKeyDown prop not working in Menu.Dropdown component (#​6910)
New Contributors

Full Changelog: mantinedev/mantine@7.13.1...7.13.2

reduxjs/redux-toolkit (@​reduxjs/toolkit)

v2.3.0

Compare Source

This feature release adds a new RTK Query upsertQueryEntries util to batch-upsert cache entries more efficiently, passes through additional values for use in prepareHeaders, and exports additional TS types around query options and selectors.

Changelog

upsertQueryEntries

RTK Query already had an upsertQueryData thunk that would upsert a single cache entry. However, some users wanted to upsert many cache entries (potentially hundreds or thousands), and found that upsertQueryData had poor performance in those cases. This is because upsertQueryData runs the full async request handling sequence, including dispatching both pending and fulfilled actions, each of which run the main reducer and update store subscribers. That means there's 2N store / UI updates per item, so upserting hundreds of items becomes extremely perf-intensive.

RTK Query now includes an api.util.upsertQueryEntries action that is meant to handle the batched upsert use case more efficiently. It's a single synchronous action that accepts an array of many {endpointName, arg, value} entries to upsert. This results in a single store update, making this vastly better for performance vs many individual upsertQueryData calls.

We see this as having two main use cases. The first is prefilling the cache with data retrieved from storage on app startup (and it's worth noting that upsertQueryEntries can accept entries for many different endpoints as part of the same array).

The second is to act as a "pseudo-normalization" tool. RTK Query is not a "normalized" cache. However, there are times when you may want to prefill other cache entries with the contents of another endpoint, such as taking the results of a getPosts list endpoint response and prefilling the individual getPost(id) endpoint cache entries, so that components that reference an individual item endpoint already have that data available.

Currently, you can implement the "pseudo-normalization" approach by dispatching upsertQueryEntries in an endpoint lifecycle, like this:

const api = createApi({
  endpoints: (build) => ({
    getPosts: build.query<Post[], void>({
      query: () => '/posts',
      async onQueryStarted(_, { dispatch, queryFulfilled }) {
        const res = await queryFulfilled
        const posts = res.data

        // Pre-fill the individual post entries with the results
        // from the list endpoint query
        dispatch(
          api.util.upsertQueryEntries(
            posts.map((post) => ({
              endpointName: 'getPost',
              arg: { id: post.id },
              value: post,
            })),
          ),
        )
      },
    }),
    getPost: build.query<Post, Pick<Post, 'id'>>({
      query: (post) => `post/${post.id}`,
    }),
  }),
})

Down the road we may add a new option to query endpoints that would let you provide the mapping function and have it automatically update the corresponding entries.

For additional comparisons between upsertQueryData and upsertQueryEntries, see the upsertQueryEntries API reference.

prepareHeaders Options

The prepareHeaders callback for fetchBaseQuery now receives two additional values in the api argument:

  • arg: the URL string or FetchArgs object that was passed in to fetchBaseQuery for this endpoint
  • extraOptions: any extra options that were provided to the base query
Additional TS Types

We've added a TypedQueryStateSelector type that can be used to pre-type selectors for use with selectFromResult:

const typedSelectFromResult: TypedQueryStateSelector<
  PostsApiResponse,
  QueryArgument,
  BaseQueryFunction,
  SelectedResult
> = (state) => ({ posts: state.data?.posts ?? EMPTY_ARRAY })

function PostsList() {
  const { posts } = useGetPostsQuery(undefined, {
    selectFromResult: typedSelectFromResult,
  })
}

We've also exported several additional TS types around base queries and tag definitions.

What's Changed

Full Changelog: reduxjs/redux-toolkit@v2.2.8...v2.3.0

[v2.2.8](


Configuration

📅 Schedule: Branch creation - "before 4am on the first day of the month" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@vercel
Copy link

vercel bot commented Nov 1, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Comments Updated (UTC)
my-nextjs-template ✅ Ready (Inspect) Visit Preview 💬 Add feedback Nov 16, 2024 4:03pm

@DuckyMomo20012 DuckyMomo20012 merged commit 5862593 into main Nov 18, 2024
2 checks passed
@DuckyMomo20012 DuckyMomo20012 deleted the renovate/all branch November 18, 2024 02:48
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants